PersistenceContextConfigurationBuilder.java
package org.codefilarete.stalactite.engine;
import javax.sql.DataSource;
import org.codefilarete.stalactite.sql.ConnectionConfiguration;
import org.codefilarete.stalactite.sql.ConnectionConfiguration.ConnectionConfigurationSupport;
import org.codefilarete.stalactite.sql.Dialect;
import org.codefilarete.stalactite.sql.DialectOptions;
/**
*
* @author Guillaume Mary
*/
public class PersistenceContextConfigurationBuilder {
protected final DatabaseVendorSettings vendorSettings;
protected final ConnectionSettings connectionSettings;
protected final DataSource dataSource;
public PersistenceContextConfigurationBuilder(DatabaseVendorSettings vendorSettings, ConnectionSettings connectionSettings, DataSource dataSource) {
this.vendorSettings = vendorSettings;
this.connectionSettings = connectionSettings;
this.dataSource = dataSource;
}
public PersistenceContextConfiguration build() {
return build(DialectOptions.noOptions());
}
public PersistenceContextConfiguration build(DialectOptions dialectOptions) {
Dialect dialect = new DialectBuilder(vendorSettings, dialectOptions).build();
ConnectionConfiguration connectionConfiguration = buildConnectionConfiguration();
return new PersistenceContextConfiguration(connectionConfiguration, dialect);
}
protected ConnectionConfiguration buildConnectionConfiguration() {
return new ConnectionConfigurationSupport(
new CurrentThreadTransactionalConnectionProvider(dataSource),
connectionSettings.getBatchSize(),
connectionSettings.getFetchSize());
}
/**
* Small class to store result of {@link PersistenceContextConfigurationBuilder#build()}.
* @author Guillaume Mary
*/
public static class PersistenceContextConfiguration {
private final ConnectionConfiguration connectionConfiguration;
private final Dialect dialect;
public PersistenceContextConfiguration(ConnectionConfiguration connectionConfiguration, Dialect dialect) {
this.connectionConfiguration = connectionConfiguration;
this.dialect = dialect;
}
public Dialect getDialect() {
return dialect;
}
public ConnectionConfiguration getConnectionConfiguration() {
return connectionConfiguration;
}
}
}